#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
企业微信机器人使用示例

本文件展示了如何在业务逻辑中使用notify.py模块发送企业微信通知
"""

import sys
import os

# 添加src目录到Python路径
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'src'))

from notify import (
    WeChatWorkBot,
    send_sync_notification,
    send_error_alert,
    send_custom_message
)


def example_basic_usage():
    """
    基本使用示例
    """
    print("=== 基本使用示例 ===")
    
    # 方式1: 使用配置文件中的webhook_key
    bot = WeChatWorkBot()
    
    # 方式2: 直接指定webhook_key
    # bot = WeChatWorkBot(webhook_key="your_webhook_key")
    
    # 发送文本消息
    bot.send_text("这是一条测试消息")
    
    # 发送带@功能的文本消息
    bot.send_text(
        "这是一条@所有人的消息",
        mentioned_list=["@all"],  # @所有人
        mentioned_mobile_list=["13800138000"]  # @指定手机号
    )
    
    # 发送Markdown消息
    markdown_content = """
    ## 📊 数据报告
    
    **今日统计：**
    - ✅ 成功：100条
    - ❌ 失败：5条
    - 📈 成功率：95%
    
    > 详细信息请查看系统日志
    """
    bot.send_markdown(markdown_content)
    
    # 发送图文消息
    articles = [
        {
            "title": "系统监控报告",
            "description": "点击查看详细的系统运行状态",
            "url": "https://your-monitor-url.com",
            "picurl": "https://your-image-url.com/monitor.png"
        }
    ]
    bot.send_news(articles)


def example_sync_notification():
    """
    同步任务通知示例
    """
    print("=== 同步任务通知示例 ===")
    
    # 成功的同步通知
    send_sync_notification(
        success_count=150,
        error_count=0
    )
    
    # 有错误的同步通知
    error_details = [
        "数据库连接超时",
        "记录ID重复: 12345",
        "字段格式错误: user_name"
    ]
    
    send_sync_notification(
        success_count=145,
        error_count=5,
        error_details=error_details
    )


def example_error_alert():
    """
    错误告警示例
    """
    print("=== 错误告警示例 ===")
    
    # 发送错误告警
    send_error_alert(
        error_message="数据库连接失败，请检查网络连接",
        task_name="数据同步任务"
    )
    
    send_error_alert(
        error_message="磁盘空间不足，剩余空间小于10%",
        task_name="系统监控"
    )


def example_custom_message():
    """
    自定义消息示例
    """
    print("=== 自定义消息示例 ===")
    
    # 发送自定义文本消息
    send_custom_message(
        message="这是一条自定义文本消息",
        msg_type="text",
        mentioned_list=["@all"]
    )
    
    # 发送自定义Markdown消息
    custom_markdown = """
    🎉 **部署成功通知**
    
    📦 **版本信息：** v2.1.0
    🚀 **部署环境：** 生产环境
    ⏰ **部署时间：** 2024-01-15 14:30:00
    
    ✨ **新功能：**
    - 新增数据导出功能
    - 优化查询性能
    - 修复已知bug
    """
    
    send_custom_message(
        message=custom_markdown,
        msg_type="markdown"
    )


def example_in_business_logic():
    """
    在业务逻辑中使用的示例
    """
    print("=== 业务逻辑中使用示例 ===")
    
    try:
        # 模拟业务逻辑
        print("开始执行数据同步...")
        
        # 这里是你的业务代码
        success_count = 0
        error_count = 0
        errors = []
        
        # 模拟处理数据
        for i in range(100):
            try:
                # 模拟数据处理
                if i % 20 == 0 and i > 0:  # 模拟一些错误
                    raise Exception(f"处理记录 {i} 时发生错误")
                success_count += 1
            except Exception as e:
                error_count += 1
                errors.append(str(e))
        
        print(f"数据同步完成: 成功 {success_count}, 失败 {error_count}")
        
        # 发送同步结果通知
        send_sync_notification(
            success_count=success_count,
            error_count=error_count,
            error_details=errors if errors else None
        )
        
    except Exception as e:
        # 发送错误告警
        send_error_alert(
            error_message=str(e),
            task_name="数据同步"
        )
        print(f"业务逻辑执行失败: {e}")


if __name__ == "__main__":
    print("企业微信机器人使用示例")
    print("注意：运行前请确保已正确配置 config/config.yaml 文件")
    print()
    
    # 运行示例（注释掉避免实际发送消息）
    # example_basic_usage()
    # example_sync_notification()
    # example_error_alert()
    # example_custom_message()
    # example_in_business_logic()
    
    print("示例代码已准备就绪，取消注释相应函数即可测试")